#ifndef _BASETYPE_H_
#define _BASETYPE_H_

#pragma once

#ifdef __cplusplus
extern "C" {
#endif

typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
typedef signed long long int64_t;
typedef unsigned long long uint64_t;

typedef char bool;
typedef char *String;

typedef uint8_t  BYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef uint64_t ULONGLONG;

#define Pausechar(val, type)    Pauseint8_t((signed char*) (val), type)
#define Pauseshort(val, type)   Pauseint16_t((signed short*) (val), type)
#define Pauseint(val, type)     Pauseint32_t((signed int*) (val), type)
#define Pauselong(val, type)    Pauseint32_t((signed int*) (val), type)

#define PauseBYTE   Pauseuint8_t
#define PauseWORD   Pauseuint16_t
#define PauseDWORD  Pauseuint32_t
#define PauseULONGLONG Pauseuint64_t

// Type function declaration, count=20
void Pauseint8_t(int8_t *val, char type);
void Pauseuint8_t(uint8_t *val, char type);
void Pauseint16_t(int16_t *val, char type);
void Pauseuint16_t(uint16_t *val, char type);
void Pauseint32_t(int32_t *val, char type);
void Pauseuint32_t(uint32_t *val, char type);
void Pauseint64_t(int64_t *val, char type);
void Pauseuint64_t(uint64_t *val, char type);
void Pausefloat(float *val, char type);
void Pausedouble(double *val, char type);
void Pausebool(bool *val, char type);
void PauseString(String *val, char type);

#ifdef __cplusplus
}
#endif

#endif
